package cn.kais.drawer;

import cn.kais.drawer.coms.BaseComs;
import cn.kais.drawer.coms.TextCom;
import cn.kais.drawer.menu.MenuTextEven;

import java.util.List;

/**
 * 坐标工具
 */
public class AxisUtil {

    /**
     * 计算评分图标 item x轴坐标
     *
     * @param i     当前第几个item  1 开始
     * @param width item 宽度
     * @param space 间距
     * @return x轴坐标
     */
    public static int doCountScoreItemX(int i, int width, int space) {
        if (i == 1) space = 0;
        if (i != 1) {
            space = space * (i - 1);
        }
        return (width * (i - 1)) + space;
    }

    /**
     * 分别计算 每个 item x 坐标
     *
     * @param index 当前第几个item  0 开始
     * @param list  组件列表 上一个item起点
     * @return x轴坐标
     */
    public static int doCountNumberItemX(int index, List<BaseComs> list) {
        int x = 0;
        for (int i = 0; i < list.size(); i++) {
            BaseComs base = list.get(i);
            if (null == base) {
                continue;
            }
            TextCom text = (TextCom) base;
            if (index == i) {
                if (i == 4 && (text.align == 4 || text.align == 5)) { // 后缀
                    BaseComs base3 = list.get(3);
                    if (base3 != null && (text.width > base3.width)) {
                        TextCom text3 = (TextCom) base3;
                        x = x - text3.width;
                    }
                } else {
                    break; // 跳出 之后不计算
                }
            } else {
                x = x + text.width;
            }
        }
        return x;
    }

    /**
     * 分别计算 每个 item y 坐标
     *
     * @param index  当前第几个item  0 开始
     * @param maxHei 整体最大高度
     * @param hei    当前 item 高度
     * @param align  整体下 每个item 的浮动方式
     * @return y轴坐标
     */
    public static int doCountNumberItemY(int index, int maxHei, int hei, int align) {
        int y = 0;
        if (align == 1) { // 顶部对齐
        }
        if (align == 2) { // 垂直居中
            y = (maxHei - hei) / 2;
        }
        if (align == 3) { // 底部对齐
            y = maxHei - hei;
        }
        if (index == 4) {
            if (align == 4) { // 顶部对齐
            }
            if (align == 5) { // 底部对齐
                y = maxHei - hei;
            }
        }
        return y;
    }

    /**
     * 分别计算 每个 item y 坐标
     *
     * @param index 当前第几个item  0 开始
     * @param list  组件列表
     * @return y轴坐标
     */
    public static int doCountTextItemY(int index, List<BaseComs> list) {
        int y = 0;
        for (int i = 0; i < list.size(); i++) {
            BaseComs base = list.get(i);
            if (index == i) break;
            y = y + base.height;
        }
        return y;
    }

    /**
     * 计算文本 对齐后的 X轴坐标
     *
     * @param even      对齐方式
     * @param left      x
     * @param width     文本框宽度
     * @param fontWidth 文本宽度
     * @return x
     */
    public static int doCountTextEvenX(MenuTextEven even, int left, int width, int fontWidth) {
        int x = left;
        switch (even) {
            case L: // 左对齐
                // 1.正常绘制
                break;
            case R: // 右对齐
                // 1.计算文本宽度 left = left + (width - fontwidth)
                x = x + (width - fontWidth);
                break;
            case CH: // 水平居中
                // 1.计算文本宽度 left = left + ((width - fontwidth) / 2)
                x = x + ((width - fontWidth) / 2);
                break;
        }
        return x;
    }

    /**
     * 计算文本 对齐后的 Y轴坐标
     *
     * @param even       对齐方式
     * @param top        y
     * @param height     文本框高度
     * @param fontHeight 文本高度
     * @return y
     */
    public static int doCountTextEvenY(MenuTextEven even, int top, int height, int fontHeight) {
        int y = top + fontHeight;
        switch (even) {
            case T: // 上对齐
                // 1.正常绘制
                break;
            case B: // 下对齐
                // 1.计算文本高度 top = (top + fontsize) + (height - fontsize)
                y = y + (height - fontHeight);
                break;
            case CV: // 垂直居中
                // 1.计算文本高度 top = (top + fontsize) + ((height - fontsize) / 2)
                y = y + (height - fontHeight) / 2;
                break;
        }
        return y;
    }

}
